package com.shujia.wyh.day13.ketang;

/*
    递归：在方法定义时，方法内部调用方法自身的现象叫做递归。
    Math.max(a,Math.max(c,d));  这个不叫递归，这个叫方法的嵌套使用
    sb.append("你好").append(12); 这个不叫递归，这个叫方法的链式调用

    举例：
        1、从前有座山，山里有座庙，庙里有一个老和尚，老和尚在给小和尚讲故事：  1
             从前有座山，山里有座庙，庙里有一个老和尚，老和尚在给小和尚讲故事：  2
                从前有座山，山里有座庙，庙里有一个老和尚，老和尚在给小和尚讲故事：  3
                    从前有座山，山里有座庙，庙里有一个老和尚，老和尚在给小和尚讲故事：  4
                    ...
           什么时候结束呢？老和尚圆寂了，或者山崩塌了，或者小和尚还俗了。

        2、学习大数据的目的是，找工作，挣钱，取老婆，生娃：
            学习大数据的目的是，找工作，挣钱，取老婆，生娃：
                学习大数据的目的是，找工作，挣钱，取老婆，生娃：
                    学习大数据的目的是，找工作，挣钱，取老婆，生娃：
                    ...
           结束条件：娶不到老婆，或者是娃不是自己的，或者找不到工作。

    举了例子之后发现，方法的递归，必须要有一个出口（结束条件），如果没有这个出口就是死递归。

 */
//需求：求5的阶乘  5*4*3*2*1
public class DiGuiDemo1 {
    public static void main(String[] args) {
        System.out.println(diGui(5));
    }

    public static int diGui(int num) {
        if (num == 1) {
            return 1;
        } else {
            return num * diGui(num - 1);
        }
    }
}
